// class Container {
//     constructor(value) {
//         this._value = value
//     }

//     map(fn) {
//         return new Container(fn(this._value))
//     }
// }

// let r = new Container(5)
//     .map(a => a+5)
//     .map(a => a*2)

// console.log(r)

class Container {
    static of (val) {
        return new Container(val)
    }

    constructor(value) {
        this._value = value
    }

    map(fn) {
        return Container.of(fn(this._value))
    }
}

let r = Container.of(5)
    .map(a => a+5)
    .map(a => a*2)

console.log(r)
console.log(Container)